Place Affinity Estimation

ABSTRACT

A system and method for estimating a place affinity for a user is disclosed. The system comprises a gathering module, a communication module and a scoring module. The gathering module receives a place and retrieves rich place data associated with the place. The communication module retrieves user profile data associated with a user and a place affinity model associated with the user. The scoring module estimates an affinity score for the place using the place affinity model based at least in part on the rich place data and the user profile data.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority under 35 USC §119(e) to U.S.Application No. 61/569,460, entitled “Place Affinity Estimation” filedDec. 12, 2011, the entirety of which is herein incorporated byreference.

BACKGROUND

The specification relates to data processing systems. In particular, thespecification relates to a system and method for estimating a placeaffinity for a user.

It is helpful to learn a user's preference or affinity to differentplaces (e.g., places that the user likes or dislikes, etc.) so that anavigation system may provide personalized navigation services to theuser. Existing systems in a vehicle that model a place affinity (or,place preference) for a user require an explicit input of the preferencefrom the user. For example, a user may add a place to a list of“Favorites” or give an explicit feedback describing that he or she likesor dislikes a place. However, this manual mode of entering a liked placein existing systems has been proven to be deficient and problematic ineliciting the place preference from the user since the user usuallyignores the request and does not provide any input.

SUMMARY OF THE INVENTION

The specification overcomes the deficiencies and limitations of theprior art at least in part by providing a system and method forestimating a place affinity for a user. The system comprises a gatheringmodule, a communication module and a scoring module. The gatheringmodule receives a place and retrieves rich place data associated withthe place. The communication module retrieves user profile dataassociated with a user and a place affinity model associated with theuser. The scoring module estimates an affinity score for the place usingthe place affinity model based at least in part on the rich place dataand the user profile data.

The specification also provides a system and method for generating aplace affinity model associated with a user. The system comprises acommunication module, gathering module and a modeling module. Thecommunication module receives a place associated with a user andretrieves user profile data for the user. The gathering module retrievesrich place data associated with the place. The modeling module retrievesa previous state of the place affinity model associated with the userand generates the place affinity model associated with the user based atleast in part on the rich place data and the previous state of the placeaffinity model.

The specification provides another method for generating a placeaffinity model associated with a user. The method comprises receiving aplace associated with a user, retrieving rich place data associated withthe place, retrieving user profile data for the user, retrieving adefault standard-user place affinity model pre-computed for one or moregroups of users and generating a place affinity model associate with theuser based at least in part on the rich place data and the defaultstandard-user place affinity model.

The specification provides yet another method for generating a placeaffinity model associated with a user. The method comprises receiving aplace associated with a user, retrieving rich place data associated withthe place, retrieving user profile data for the user, retrieving anaverage-user place affinity model generated by aggregating individualplace affinity models for a group of users and generating a placeaffinity model associate with the user based at least in part on therich place data and the average-user place affinity model.

Furthermore, the specification provides a system and method forpersonalizing a place search result for a user. The system comprises acommunication module, a personalization module and a scoring module. Thecommunication module receives a search request from a user. Thepersonalization module determines one or more matching places matched tothe search request. The scoring module estimates one or more affinityscores for the one or more matching places. The personalization modulethen personalizes the one or more matching places based at least in parton one or more affinity scores.

The specification provides a system and method for estimating acurrently visited place for a user. The system comprises a communicationmodule and a place estimation module. The communication module receivessensor data for a vehicle associated with a user. The sensor datadescribes a current vehicle location. The communication module retrievescandidate place data describing one or more candidate places within arange of the current vehicle location. The communication module alsoretrieves historical place data describing one or more places visited bythe user in the past. The place estimation module estimates a currentlyvisited place for the user based at least in part on the one or more ofthe current vehicle location, the candidate place data and thehistorical place data.

BRIEF DESCRIPTION OF THE DRAWINGS

The specification is illustrated by way of example, and not by way oflimitation in the figures of the accompanying drawings in which likereference numerals are used to refer to similar elements.

FIG. 1 is a high-level block diagram illustrating a system forestimating a place affinity for a user according to one embodiment.

FIG. 2 is a block diagram illustrating a place affinity module in detailaccording to one embodiment.

FIG. 3A is a block diagram illustrating a storage according to oneembodiment.

FIG. 3B is a block diagram illustrating a place ontology subset includedin the storage according to one embodiment.

FIG. 4 is a flow diagram illustrating a method for identifying a useraccording to one embodiment.

FIG. 5 is a flow diagram illustrating a method for estimating acurrently visited place according to one embodiment.

FIG. 6 is a flow diagram illustrating a method for determining like datafor a currently visited place according to one embodiment.

FIG. 7 is a flow diagram illustrating a method for forming rich placedata for a place according to one embodiment.

FIG. 8 is a flow diagram illustrating a method for generating a placeaffinity model for a user according to one embodiment.

FIG. 9 is a flow diagram illustrating a method for estimating anaffinity score for a place according to one embodiment.

FIGS. 10A-10B are flow diagrams illustrating a method for estimating acurrently visited place according to another embodiment.

FIG. 11 is a flow diagram illustrating a method for estimating a placeaffinity model according to another embodiment.

FIGS. 12A-12B are flow diagrams illustrating a method for updating aplace affinity model according to one embodiment.

FIGS. 13A-13B are flow diagrams illustrating a method for estimating anaffinity score for a place according to another embodiment.

FIG. 14 is a flow diagram illustrating a method for personalizing aplace search result for a user according to one embodiment.

FIG. 15 is a graphical representation illustrating three examples forestimating a currently visited place for a user according to oneembodiment.

FIG. 16 shows a table illustrating machine learnable data according toone embodiment.

FIG. 17 is a chart illustrating accuracy evaluations for two scoringmechanisms according to one embodiment.

FIG. 18 shows screenshots of place search results for a user accordingto one embodiment.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

A system and method for estimating a place affinity for a user isdescribed below. In the following description, for purposes ofexplanation, numerous specific details are set forth in order to providea thorough understanding of the specification. It will be apparent,however, to one skilled in the art that the embodiments can be practicedwithout these specific details. In other instances, structures anddevices are shown in block diagram form in order to avoid obscuring thespecification. For example, the specification is described in oneembodiment below with reference to user interfaces and particularhardware. However, the description applies to any type of computingdevice that can receive data and commands, and any peripheral devicesproviding services.

Reference in the specification to “one embodiment” or “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiment is included in at least oneembodiment. The appearances of the phrase “in one embodiment” in variousplaces in the specification are not necessarily all referring to thesame embodiment.

Some portions of the detailed descriptions that follow are presented interms of algorithms and symbolic representations of operations on databits within a computer memory. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self consistent sequence of steps leading to a desiredresult. The steps are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic signals capable of being stored,transferred, combined, compared and otherwise manipulated. It has provenconvenient at times, principally for reasons of common usage, to referto these signals as bits, values, elements, symbols, characters, terms,numbers or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the following discussion,it is appreciated that throughout the description, discussions utilizingterms such as “processing” or “computing” or “calculating” or“determining” or “displaying” or the like, refer to the action andprocesses of a computer system, or similar electronic computing device,that manipulates and transforms data represented as physical(electronic) quantities within the computer system's registers andmemories into other data similarly represented as physical quantitieswithin the computer system memories or registers or other suchinformation storage, transmission or display devices.

The specification also relates to an apparatus for performing theoperations herein. This apparatus may be specially constructed for therequired purposes, or it may comprise a general-purpose computerselectively activated or reconfigured by a computer program stored inthe computer. Such a computer program may be stored in a computerreadable storage medium, such as, but is not limited to, any type ofdisk including floppy disks, optical disks, compact disc read-onlymemories (CD-ROMs), magnetic disks, read-only memories (ROMs), randomaccess memories (RAMs), erasable programmable read-only memories(EPROMs), electrically erasable programmable read-only memories(EEPROMs), magnetic or optical cards, flash memories including universalserial bus (USB) keys with non-volatile memory or any type of mediasuitable for storing electronic instructions, each coupled to a computersystem bus.

Some embodiments can take the form of an entirely hardware embodiment,an entirely software embodiment or an embodiment containing bothhardware and software elements. A preferred embodiment is implemented insoftware, which includes but is not limited to firmware, residentsoftware, microcode, etc.

Furthermore, some embodiments can take the form of a computer programproduct accessible from a computer-usable or computer-readable mediumproviding program code for use by or in connection with a computer orany instruction execution system. For the purposes of this description,a computer-usable or computer-readable medium can be any apparatus thatcan contain, store, communicate, propagate, or transport the program foruse by or in connection with the instruction execution system,apparatus, or device.

A data processing system suitable for storing and/or executing programcode will include at least one processor coupled directly or indirectlyto memory elements through a system bus. The memory elements can includelocal memory employed during actual execution of the program code, bulkstorage, and cache memories which provide temporary storage of at leastsome program code in order to reduce the number of times code must beretrieved from bulk storage during execution.

Input/output or I/O devices (including but not limited to keyboards,displays, pointing devices, etc.) can be coupled to the system eitherdirectly or through intervening I/O controllers.

Network adapters may also be coupled to the system to enable the dataprocessing system to become coupled to other data processing systems orremote printers or storage devices through intervening private or publicnetworks. Modems, cable modems and Ethernet cards are just a few of thecurrently available types of network adapters.

Finally, the algorithms and displays presented herein are not inherentlyrelated to any particular computer or other apparatus. Variousgeneral-purpose systems may be used with programs in accordance with theteachings herein, or it may prove convenient to construct morespecialized apparatus to perform the required method steps. The requiredstructure for a variety of these systems will appear from thedescription below. In addition, the specification is not described withreference to any particular programming language. It will be appreciatedthat a variety of programming languages may be used to implement theteachings of the various embodiments as described herein.

System Overview

FIG. 1 illustrates a block diagram of a system 100 for estimating aplace affinity for a user according to one embodiment. The illustratedsystem 100 includes a navigation system 102, a social network server120, a search server 124, a client device 130, a mobile device 134, aweb server 138 and a knowledge server 150. These entities of the system100 are communicatively coupled to each other to facilitate transmittingand receiving of information (e.g., a place search request, dataassociated with a place, etc.) between each other. In the illustratedembodiment, these entities are communicatively coupled via a network105.

Although FIG. 1 illustrates one navigation system 102, one socialnetwork server 120, one search server 124, one client device 130, onemobile device 134, one web server 138 and one knowledge server 150,persons skilled in the art will appreciate that the description appliesto any system architecture having any number of navigation systems 102,social network servers 120, search servers 124, client devices 130,mobile devices 134, web servers 138 and knowledge servers 150.Furthermore, although only one network 105 is coupled to the navigationsystem 102, the social network server 120, the search server 124, theclient device 130, the mobile device 134, the web server 138 and theknowledge server 150, in practice any number of networks 105 can beconnected to the entities.

In the illustrated embodiment, the social network server 120 iscommunicatively coupled to the network 105 via signal line 103. Thesearch server 124 is communicatively coupled to the network 105 viasignal line 107. The client 130 is communicatively coupled to thenetwork 105 via one or more of signal lines 119 and 121. The mobiledevice 134 is communicatively coupled to the network 105 via one or moreof signal lines 115 and 117. The web server 138 is communicativelycoupled to the network 105 via signal line 123. The knowledge server 150is communicatively coupled to the network 105 via signal line 125. Thenavigation system 102 is communicatively coupled to the network 105 viaone or more of signal lines 109, 111 and 113. In one embodiment, anetwork interface 108 comprised within the navigation system 102 iscommunicatively coupled to the network 105 via one or more of signallines 109 and 111. A global positioning system (GPS) 110 comprisedwithin the navigation system 102 is communicatively coupled to thenetwork 105 via signal line 113. In one embodiment, each of signal lines103, 107, 111, 117, 121, 123 and 125 represents one of a wiredconnection (e.g., a connection via a cable) and a wireless connection(e.g., a wireless local area network (LAN) connection). Each of signallines 109, 113, 115 and 119 represents a wireless connection (e.g., awireless LAN connection, a satellite connection, etc.).

The network 105 is a conventional type of network, wired or wireless,and may have any number of configurations such as a star configuration,token ring configuration or other configurations known to those skilledin the art. In one embodiment, the network 105 comprises one or more ofa local area network (LAN), a wide area network (WAN) (e.g., theInternet) and/or any other interconnected data path across whichmultiple devices communicate. In another embodiment, the network 105 isa peer-to-peer network. The network 105 is coupled to or includesportions of a telecommunications network for sending data in a varietyof different communication protocols. For example, the network 105 is a3G network or a 4G network. In yet another embodiment, the network 105includes Bluetooth® communication networks or a cellular communicationsnetwork for sending and receiving data such as via short messagingservice (SMS), multimedia messaging service (MMS), hypertext transferprotocol (HTTP), direct data connection, wireless application protocol(WAP), email, etc. In yet another embodiment, all or some of the linksin the network 105 are encrypted using conventional encryptiontechnologies such as secure sockets layer (SSL), secure HTTP and/orvirtual private networks (VPNs).

The navigation system 102 is a system for providing navigationinformation. For example, the navigation system 102 is an on-boardnavigation system embedded in a vehicle. The navigation system 102includes a processor 104, a memory 106, a network interface 108, a GPS110, a place affinity module 112, a storage device 118, a sensor 170 anda display 160. The place affinity module 112 and the storage 118 aredepicted using dashed lines to indicate that in one embodiment the placeaffinity module 112 and the storage 118 are comprised within theknowledge server 150.

Although only one processor 104, one memory 106, one network interface108, one GPS 110, one storage 118, one sensor 170 and one display 160are illustrated in the navigation system 102, one skilled in the artwill recognize that any number of these components are available in thenavigation system 102. One skilled in the art will also appreciate thatthe navigation system 102 may include any other components not shown inFIG. 1 such as an input device, an audio system and other componentsconventional to a navigation system.

The processor 104 comprises an arithmetic logic unit, a microprocessor,a general purpose controller or some other processor array to performcomputations, retrieve data stored on the storage 118, etc. Theprocessor 104 processes data signals and may comprise various computingarchitectures including a complex instruction set computer (CISC)architecture, a reduced instruction set computer (RISC) architecture, oran architecture implementing a combination of instruction sets. Althoughonly a single processor is shown in FIG. 1, multiple processors may beincluded. The processing capability may be limited to supporting thedisplay of images and the capture and transmission of images. Theprocessing capability might be enough to perform more complex tasks,including various types of feature extraction and sampling. It will beobvious to one skilled in the art that other processors, operatingsystems, sensors, displays and physical configurations are possible.

The memory 106 stores instructions and/or data that may be executed bythe processor 104. The instructions and/or data may comprise code forperforming any and/or all of the techniques described herein. The memory106 may be a dynamic random access memory (DRAM) device, a static randomaccess memory (SRAM) device, flash memory or some other memory deviceknown in the art. In one embodiment, the memory 106 also includes anon-volatile memory or similar permanent storage device and media suchas a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROMdevice, a DVD-RAM device, a DVD-RW device, a flash memory device, orsome other mass storage device known in the art for storing informationon a more permanent basis.

The network interface 108 is an interface for connecting the navigationsystem 102 to a network. For example, the network interface 108 is anetwork adapter that connects the navigation system 102 to the network105. The network interface 108 is communicatively coupled to the network105 via one or more of signal lines 111 and 109. In one embodiment, thenetwork interface 108 receives data from one or more of the socialnetwork server 120, the search server 124, the client 130, the mobiledevice 134, the web server 138 and the knowledge server 150 via thenetwork 105. The network interface 108 sends the received data to one ormore components of the navigation system 102 (e.g., the place affinitymodule 112, etc.). In another embodiment, the network interface 108receives data from one or more components of the navigation system 102(e.g., the place affinity module 112, etc.) and sends the data to one ormore of the social network server 120, the search server 124, the client130, the mobile device 134, the web server 138 and the knowledge server150 via the network 105.

In one embodiment, the network interface 108 includes a port for directphysical connection to the network 105 or to another communicationchannel. For example, the network interface 108 includes a universalserial bus (USB), a category 5 (CAT-5) cable or similar port for wiredcommunication with the network 105. In another embodiment, the networkinterface 108 includes a wireless transceiver for exchanging data withthe network 105, or with another communication channel, using one ormore wireless communication methods, such as IEEE 802.11, IEEE 802.16,BLUETOOTH®, near field communication (NFC) or another suitable wirelesscommunication method. In one embodiment, the network interface 108includes a NFC chip that generates a radio frequency (RF) forshort-range communication.

The GPS 110 is a system for providing location data and timestamp data.For example, the GPS 110 is a conventional GPS that locates a vehicle inreal time and provides timestamp data describing the current time. Inone embodiment, the GPS 110 sends the location data and the timestampdata to the place affinity module 112. One skilled in the art willrecognize that the GPS 110 may provide driving information (e.g.,driving instructions to a destination, estimated time of arrival, etc.)and other information such as information about gas stations,restaurants, hotels, etc., to a user.

The place affinity module 112 is code and routines for modeling andestimating a place affinity for a user. In one embodiment, the placeaffinity module 112 includes code and routines stored in an on-chipstorage (not pictured) of the processor 104. In another embodiment, theplace affinity module 112 is implemented using hardware such as afield-programmable gate array (FPGA) or an application-specificintegrated circuit (ASIC). In yet another embodiment, the place affinitymodule 112 is implemented using a combination of hardware and software.

The place affinity for a user is data describing the user's preferencefor one or more places. For example, the place affinity for a userincludes data describing one or more characteristics for one or moreplaces that the user likes. For example, a user prefers places withcertain brands, such as Toyota, X Coffee, etc. The place affinity isalso referred to as a place preference hereinafter. The place affinitymodule 112 is described below in more detail with reference to FIGS.2-18.

The storage device 118 is a non-transitory memory that stores data. Forexample, the storage device 118 is a dynamic random access memory (DRAM)device, a static random access memory (SRAM) device, flash memory orsome other memory device known in the art. In one embodiment, thestorage device 118 also includes a non-volatile memory or similarpermanent storage device and media such as a hard disk drive, a floppydisk drive, a compact disc read only memory (CD-ROM) device, a digitalversatile disc read only memory (DVD-ROM) device, a digital versatiledisc random access memories (DVD-RAM) device, a digital versatile discrewritable (DVD-RW) device, a flash memory device, or some othernon-volatile storage device known in the art.

In one embodiment, the storage 118 stores identification data forauthenticating one or more users, historical place data describing oneor more places that a user has visited (also referred to as one or morepoints of interest (POIs) that the user has visited), liked place datadescribing one or more places that a user likes, a geospatial placelook-up table, model data describing one more place affinity models fora user, affinity score data describing one or more affinity scores forone or more places, rich place data for one or more places and userprofile data describing a user's interests, hobbies, etc. One skilled inthe art will recognize that the storage 118 may store any other data forproviding the functionality described herein.

In one embodiment, the storage 118 incorporates an ontology defining aconcept hierarchy of places based on their categories and the propertiesassociated with each of those place types. All concepts and propertiesin the ontology belong to the ontology namespace. In one embodiment, thedata stored in the storage 118 is identified by Uniform ResourceIdentifiers (URIs) and represented in Resource Description Framework(RDF). For example, the rich place data is retrieved from multiplesources and incorporated into the ontology in the storage 118. Inanother embodiment, the storage 118 provides more sophisticated datastructures including one or more of lists, stacks and queues. Forexample, the storage 118 provides a sorted list of places to arequesting component of the system 100 such as the navigation system102. The storage 118 will be described in further detail below withreference to FIGS. 3A-3B.

The display 160 is any device for displaying data to a user. Forexample, the display 160 is one of a touch screen display device, aliquid crystal display (LCD) and any other conventional display deviceknown to one skilled in the art.

The sensor 170 is any type of conventional sensor configured to collectany type of data for a traveling vehicle. For example, the sensor 170 isone of the following: a light detection and ranging (LIDAR) sensor; aninfrared detector; a motion detector; a thermostat; and a sounddetector, etc. Persons having ordinary skill in the art will recognizethat other types of sensors are possible.

In one embodiment, the system 100 includes a combination of differenttypes of sensors 170. For example, the system 100 includes a firstsensor 170 for determining a current time and a second sensor 170 forlocating a vehicle in real time. In another embodiment, the system 100includes a sensor 170 for estimating a time spent at a place. Forexample, the sensor 170 determines a first timestamp that a user leavesa vehicle and a second timestamp that a user returns to the vehicle. Thesensor 170 determines the time spent at the place based at least in parton the time difference between the first timestamp and the secondtimestamp.

The social network server 120 is any computing device having a processor(not pictured) and a computer-readable storage medium (not pictured)storing data for providing a social network to users. Although only onesocial network server 120 is shown, persons of ordinary skill in the artwill recognize that multiple social network servers 120 may be present.A social network is any type of social structure where the users areconnected by a common feature. The common feature includes friendship,family, work, an interest, etc. The common features are provided by oneor more social networking systems, such as those included in the system100, including explicitly-defined relationships and relationshipsimplied by social connections with other users, where the relationshipsare defined in a social graph. The social graph is a mapping of allusers in a social network and how they are related to each other.

For clarity and convenience, hereinafter, the social connection of auser is also referred to as another user connected to the user by one ormore of the common features.

In the depicted embodiment, the social network server 120 includes asocial network application 122. The social network application 122includes code and routines stored on a memory (not pictured) of thesocial network server 120 that, when executed by a processor (notpictured) of the social network server 120, causes the social networkserver 120 to provide a social network accessible by a client device 130and/or a mobile device 134 via the network 105. In one embodiment, auser publishes comments on the social network. For example, a user ofthe social network application 122 provides a status update and otherusers make comments on the status update. In another embodiment, a userin a vehicle interacts with the social network via a social featureadded to the navigation system 102. For example, a user clicks on asocial graphic such as a “share” button shown on a graphical userinterface (“GUI”, “GUIs”) presented by a display 160 of the navigationsystem 102 to share a liked place in the social network.

The search server 124 is any computing device having a processor (notpictured) and a computer-readable storage medium (not pictured) storingdata for providing a search service to users. In the depictedembodiment, the search server 124 includes a search module 126. Thesearch module 126 is code and routines for providing one or more searchresults to a user. In one embodiment, the search module 126 receives asearch request from a user operating on the navigation system 102 viathe network 105, searches a plurality of data sources (e.g., a datasource included in the search server 124, a data source from the socialnetwork server 120, etc.) for one or more results matching to the searchrequest and sends the results to the navigation system 102.

For example, the search module 126 receives an input to search for abank near a current location of a user operating on the navigationsystem 102. The search module 126 searches a plurality of data sourcesfor matching banks and sends the banks to the navigation system 102 viathe network 105, causing the display 160 to present the matching banksto the user. In one embodiment, the place affinity module 112personalizes the results for the user before presenting the results tothe user as described below with reference to FIG. 14. GUIs forpresenting search results to a user will be described below withreference to FIG. 18.

The client 130 is any computing device that includes a memory (notpictured) and a processor (not pictured). For example, the client 130 isa personal computer (“PC”), a cell phone (e.g., a smart phone, a featurephone, etc.), a tablet computer (or tablet PC), a laptop, etc. Onehaving ordinary skill in the art will recognize that other types ofclients 130 are possible. In one embodiment, the system 100 comprises acombination of different types of clients 130.

In the illustrated embodiment, the client 130 comprises a browser 132.In one embodiment, the browser 132 is code and routines stored in amemory of the client 130 and executed by a processor of the client 130.For example, the browser 130 is a browser application such as MozillaFirefox. In one embodiment, the browser 130 presents a GUI to a user ona display device (not pictured) of the client 130 and allows the user toinput information via the GUI.

The mobile device 134 is any mobile computing device that includes amemory (not pictured) and a processor (not pictured). For example, themobile device 134 is a cell phone (e.g., a smart phone, a feature phone,etc.), a tablet computer (or tablet PC), a laptop, etc. One havingordinary skill in the art will recognize that other types of mobiledevices 134 are possible. In one embodiment, the system 100 comprises acombination of different types of mobile devices 134.

In the illustrated embodiment, the mobile device 134 comprises a thinapplication 136. In one embodiment, the thin application 136 is code androutines stored in a memory of the mobile device 134 and executed by aprocessor of the mobile device 134. For example, the thin application136 is an application that provides a GUI for a user to interact withthe navigation system 102.

The web server 138 is a hardware server device. The web server 138comprises a website module 140. The website module 140 is code androutines that, when executed by a processor (not pictured), generates awebsite (not pictured) that is hosted by the web server 138. Forexample, the web server 138 hosts a website generated by the websitemodule 140, and the website is accessed by one or more of the navigationsystem 102, the mobile device 134 and the browser 132 operating on theclient device 130 via the network 105. In one embodiment, the websitemodule 140 is stored on a non-transitory memory (not pictured)associated with the web server 138.

The knowledge server 150 is any computing device having a processor (notpictured) and a computer-readable storage medium storing data forlearning a place affinity for a user. For example, the knowledge server150 is a semantic web knowledge system for providing the functionalitydescribed herein (also referred to as an “IKCoN” system describedbelow). In the depicted embodiment, the knowledge server 150 includes anaccess control module 152 and an endpoint module 154. In one embodiment,the knowledge server 150 also includes a place affinity module 112 and astorage 118. These components of the knowledge server 150 arecommunicatively coupled to each other.

The access control module 152 is code and routines for controllingaccess to the knowledge server 150. For example, the access controlmodule 152 is an access control application programming interface (API).In one embodiment, the access control module 152 authenticates a user ora navigation system 102 embedded in a vehicle before authorizing theuser or the navigation system 102 to access any data in the knowledgeserver 150. For example, the access control module 152 authenticates auser or a navigation system 102 based on an identifier and a secretpasskey or a combination of both.

In one embodiment, the access control module 152 controls access to theknowledge server 150 based at least in part on namespaces. For example,the access control module 152 controls access to the knowledge server150 based on one or more of an ontology namespace, an instancenamespace, a namespace for each user, a namespace for each platformservice and a subspace for each platform service within a user'snamespace, etc. In one embodiment, the access control module 152establishes different access control rules for the different namespaces.For example, all user specific data (e.g., the user's home or workaddress, etc.) not owned by any components in the system 100 belongs tothe user's namespace. The access control module 152 grants an access toany component in the system 100 such as the client 130 as long as thecomponent provides identification data for the user matching the userauthentication data.

The endpoint module 154 is code and routines for providing an interfacethrough which an application interacts with the place affinity module112 and the storage 118. For example, the endpoint module 154 is anendpoint conforming to representational state transfer (REST)constraints such as a RESTful endpoint for providing one or more RESTfulservices. In one embodiment, the endpoint module 154 determines whetherto provide the services synchronously or asynchronously. For example,the endpoint module 154 determines that an application executed in theclient 130 proceeds accessing the knowledge server 150 while the placeaffinity module 112 updates the place affinity model.

Place Affinity Module 112

Referring now to FIG. 2, depicted is a block diagram of a computingsystem 200 including a place affinity module 112 in more detailaccording to one embodiment. In one embodiment, the computing system 200is the navigation system 102. In another embodiment, the computingsystem 200 is the knowledge server 150. In the illustrated embodiment,the place affinity module 112 includes a communication module 201, anidentification module 203, a place estimation module 205, a likingmodule 207, a gathering module 209, a modeling module 211, a scoringmodule 213, an updating module 215 and a personalization module 217. Inone embodiment, these components of the place affinity module 112 arecommunicatively coupled to each other via a bus 220. The computingsystem 200 also includes storage 118.

In the illustrated embodiment, the communication module 201 iscommunicatively coupled to the bus 220 via signal line 222. Theidentification module 203 is communicatively coupled to the bus 220 viasignal line 224. The place estimation module 205 is communicativelycoupled to the bus 220 via signal line 226. The liking module 207 iscommunicatively coupled to the bus 220 via signal line 228. Thegathering module 209 is communicatively coupled to the bus 220 viasignal line 230. The modeling module 211 is communicatively coupled tothe bus 220 via signal line 232. The scoring module 213 iscommunicatively coupled to the bus 220 via signal line 234. The updatingmodule 215 is communicatively coupled to the bus 220 via signal line236. The personalization module 217 is communicatively coupled to thebus 220 via signal line 238. The storage 118 is communicatively coupledto the bus 220 via signal line 240.

The communication module 201 is code and routines for handlingcommunications between components of the place affinity module 112 andother components of the system 100. For example, the communicationmodule 201 receives location data and timestamp data from one or more ofthe GPS 110 and the sensor 170 and sends the location data and thetimestamp data to one or more of the place estimation module 205, themodeling module 211 and the scoring module 213. In one embodiment, thecommunication module 201 also handles communications among components ofthe place affinity module 112. For example, the communication module 201receives place data describing an estimate of a currently visited placefrom the place estimation module 205 and sends the place data to theliking module 207.

The identification module 203 is code and routines for identifying auser. In one embodiment, a sensor 170 reads identification data for auser and sends the identification data to the identification module 203.For example, the sensor 170 reads the identification data via a cardwiping or a radio-frequency identification (RFID) card. In anotherembodiment, a user inputs the identification data via a graphical userinterface (GUI) generated by the navigation system 102. Theidentification module 203 compares the received identification data touser authentication data stored in the storage 118 and verifies theidentity of the user. If the identification data matches to the userauthentication data for the user, the identification module sends theidentification data associated with the user to other components of theplace affinity module 112 such as the place estimation module 205, thegathering module 209, etc.

In one embodiment, the identification data is one of a user name and apassword, a proxy device for a user such as a card or a handheld deviceand/or a vehicle that the user is registered to, etc. One skilled in theart will recognize that other forms for the identification data arepossible.

The place estimation module 205 is code and routines for estimating acurrently visited place for a user. The place estimation module 205receives sensor data such as GPS location data describing a currentvehicle location and timestamp data describing the time of the day fromone or more of the GPS 110 and the sensor 170. In one embodiment, theplace estimation module 205 estimates a currently visited place for auser when the vehicle is stationary at the location. The placeestimation module 205 retrieves candidate place data describing one ormore candidate places close to the vehicle location (e.g., within apredetermined range (e.g., 100 meters) of the location) from ageospatial look-up table stored in the storage 118. The place estimationmodule 205 retrieves historical place data describing one or more placesvisited by the user in the past that are close to the vehicle location(e.g., within a predetermined range (e.g., 100 meters) of the location)based at least in part on the identification data for the user.

In one embodiment, the place estimation module 205 estimates a currentlyvisited place based at least in part on one or more of the vehiclelocation, the time, the identification data, the historical place dataand the candidate place data. In one embodiment, the place estimationmodule 205 selects a place as the currently visited place from thehistorically visited places by the user. For example, from the one ormore candidate places, the place estimation module 205 selects a placethat has been visited by the user. In another embodiment, the placeestimation module 205 chooses a place as the currently visited placebased on the time spent on it and the time of the day. For example, theplace estimation module 205 determines a restaurant from the one or morecandidate places as the currently visited place based on that it is thenoon and the user spent one and a half hour at the place. In yet anotherembodiment, the place estimation module 205 determines a candidate placewithin a walkable distance to the vehicle location as the currentlyvisited place.

The place estimation module 205 stores place data describing thecurrently visited place in the storage 118 as a part of the historicalplace data for the user.

The liking module 207 is code and routines for determining like dataindicating if a user likes a place. The liking module 207 receives placedata describing a currently visited place from the place estimationmodule 205 and identification data from the identification module 203.In one embodiment, the liking module 207 receives new visited place datadescribing a newly visited place from the place estimation module 205.The liking module 207 receives sensor data describing the time spent atthe place for the current visit to the place from a sensor 170. Theliking module 207 retrieves a visiting frequency to the place and thepast time spent at the place for each past visit to the place from thehistorical place data stored in the storage 118.

In one embodiment, the liking module 207 determines like data for theplace based at least in part on one or more of the identification data,the place data, the time spent for the current visit, the visitingfrequency and the time spent for each past visit. In one embodiment, thelike data describes that the user likes the place and the place isreferred to as a liked place (or, a preferred place). The liking module207 stores the liked place data describing the liked place in thestorage 118. Alternatively, the like data describes that the user doesnot like the place and the place is referred to as a not-liked place(or, a not-preferred place). In one embodiment, the like module storesthe like data for the place in the storage 118.

The gathering module 209 is code and routines for collecting data for aplace. The gathering module 209 receives the identification data fromthe identification module 203 and place data describing a liked placefrom the liking module 207. The gathering module 209 collects a varietyof data associated with the liked place for a user from a plurality ofdata sources. In one embodiment, the gathering module 209 retrieves dataassociated with the liked place from the historical place data stored inthe storage 118.

In one embodiment, the gathering module 209 additionally collects datafor the liked place from one or more of the search server 124, the webserver 138, the mobile device 134, the client 130 and the social networkserver 120, etc. For example, the gathering module 209 collects datadescribing that friends of the user on a social network have visited theplace. As another example, the gathering module 209 collects datadescribing one or more reviews for the place from a web server 138. Oneskilled in the art will recognize that the gathering module 209 maycollect any other data for the liked place from any data sources. Thedata collected from a plurality of data sources for a place is referredto as rich place data.

In another embodiment, the gathering module 209 receives place datadescribing a place (e.g., a liked place or a not-liked place) from theplace estimation module 205 and collects rich place data for the placeas described above. In either embodiment, the gathering module 209stores the rich place data in the storage 118. In one embodiment, thegathering module 209 also sends the rich place data to the modelingmodule 211 and/or updating module 215.

In one embodiment, the place is marked with an affinity value by theuser based on inputs from different sources. For example, the user marksa place with an affinity value based on inputs from an interactivedialog, a survey, retrieved personal data from social networks, etc. Theaffinity value for the place indicates how the user likes the place. Thegathering module 209 receives the affinity value for the place marked bythe user and includes the affinity value for the place in the rich placedata and stores it in the storage 118. In one embodiment, the affinityvalue for the place marked by the user is used to generate a placeaffinity model for the user.

The modeling module 211 is code and routines for generating a placeaffinity model for a user. In one embodiment, the modeling module 211receives identification data from the identification module 203 and richplace data from the gathering module 209. In another embodiment, themodeling module 211 receives place data describing places from one ormore of other components in the system 100 via the communication module201. For example, when a driver searches POIs on a desktop at home andsends the POIs from the desktop to the in-vehicle navigation system 102via the network 105 before getting into the car, the modeling module 211receives the POIs via the communication module 201 and the network 105.As another example, a driver selects a place from a smart phone using aninstalled application and sends the place to the vehicle as adestination for the navigation system 102. The modeling module 211receives place data describing the place via the communication module201 and the network 105. In yet another example, the modeling module 211retrieves places that a user has visited from the historical place datain the storage 118. The modeling module 211 then instructs the gatheringmodule 209 to retrieve rich place data for the places and builds a placeaffinity model for the user as described below.

The modeling module 211 retrieves user profile data (e.g., user'saddress, interests, hobbies, etc.) from the storage 118 for addingcontext to the rich place data. For example, the ontology forrepresentations of data helps an automatic extrapolation of context. Themodeling module 211 adds the user profile data as context to the richplace data based on certain rules programmed in the modeling module 211.For example, if the user profile data includes the user's home or workaddress, the modeling module 211 adds a distance from home or a distancefrom work context to the rich place data.

The modeling module 211 also retrieves sensor data from one or moresensors 170 and determines situation data describing a situation for auser based on the sensor data. For example, the modeling module 211retrieves timestamp data describing that the time is noon and locationdata describing that the vehicle has parked on a plaza from a sensor170. The modeling module 211 estimates a situation that the user is outfor lunch based on the timestamp data and the location data. In oneembodiment, the modeling module 211 adds the situation to the rich placedata as context. For example, the modeling module 211 determines whethera driver accessed an Automated Teller Machine (ATM) of a bank oractually had to stop by the bank for a longer time based on whether thetime of the day was in the morning or evening and that the time spent atthe bank. The modeling module 211 adds the situation such as that thedriver accessed the ATM only to the context of the rich place data forthe bank.

The modeling module 211 uses the rich place data and the context togenerate a place affinity model. In one embodiment, the modeling module211 generates a place affinity model for the user based at least in parton the user profile data, the rich place data, the situation data andthe sensor data describing the time and the location, etc. In oneembodiment, a place affinity model is a model characterizing a placepreference for a user. Accordingly, the place affinity model is alsoreferred to as a preference model. For example, the place affinity modelincludes model data describing all the favorite places for the user andthe common characteristics for the favorite places.

In one embodiment, the modeling module 211 retrieves a previous state ofthe place affinity model for the user from the model data describedbelow with reference to FIG. 3A. In one embodiment, the modeling module211 generates a place affinity model associated with the user based atleast in part on the rich place data and the previous state of the placeaffinity model as described below with reference to FIG. 3A.

In one embodiment, the modeling module 211 pre-computes a defaultstandard-user place affinity model for one or more groups of users. Forexample, the modeling module 211 pre-computes the default standard-userplace affinity model based at least in part on empirical evidence suchas experiences and observations. The modeling module 211 stores thedefault standard-user place affinity model in the storage 118 as modeldata. In one embodiment, a standard-user place affinity model is apre-computed and/or pre-configured place affinity model for a standarduser. For example, a standard user is a user having general preferencesas a human-being, e.g., preferring places that are nearer than farther.In one embodiment, the modeling module 211 uses the standard-user placeaffinity model as a seed place affinity model by customizing thestandard-user place affinity model to an individual place affinity modelfor a user. For example, the modeling module 211 retrieves the defaultstandard-user place affinity model from model data in the storage 118and generates a place affinity model associated with a user based atleast in part on the rich place data and the default standard-user placeaffinity model.

In one embodiment, the modeling module 211 generates an average-userplace affinity model and publishes the average-user place affinity modelperiodically. For example, the modeling module 211 comprised in theknowledge server 150 retrieves one or more individual place affinitymodels (e.g., user preference models) for a group of users from themodel data described below with reference to FIG. 3A and builds anaverage-user place affinity model by aggregating the one or moreindividual place affinity models for the group of users. In oneembodiment, the modeling module 211 generates average-user placeaffinity models for multiple groups of users. For example, people in thebay area prefer smaller distance while people in the Midwest can acceptlarger distance. The modeling module 211 builds an average-user placeaffinity models for each of these two groups of people by aggregatingindividual place affinity models for users in each group.

In one embodiment, the modeling module 211 publishes the average-userplace affinity model to components of the system 100 periodically. Forexample, the modeling module 211 comprised in the knowledge server 150periodically retrieves individual place affinity models from othercomponents of the system 100 (such as navigation systems for otherusers) and periodically feeds an average-user place affinity model backto the components of the system 100. In one embodiment, the modelingmodule 211 retrieves an average-user place affinity model from the modeldata described below with reference to FIG. 3A and generates a placeaffinity model associated with the user based at least in part on therich place data and the average-user place affinity model.

In one embodiment, the modeling module 211 applies machine learningtechniques to generate the place affinity model for the user. Themodeling module 211 converts the data (e.g., data represented in RDF)used to generate the place affinity model into a suitable representation(e.g., machine learnable data). Different sources have differentrepresentations for the data such as rich place data. The modelingmodule 211 converts the data from different sources into machinelearnable data. The machine learnable data will be described in furtherdetail below with reference to FIG. 16. The modeling module 211 thenapplies machine learning methods to the data and generates the placeaffinity model for the user. In one embodiment, the modeling module 211stores model data describing the place affinity model for the user inthe storage 118.

The scoring module 213 is code and routines for estimating an affinityscore for a place. In one embodiment, the scoring module 213 receivesplace data describing a place from one of a user, the place estimationmodule 205 and any other components of the system 100. In oneembodiment, the place is a place that the user has visited. In anotherembodiment, the place is a place that the user has not visited before.The scoring module 213 receives rich place data for the place from thegathering module 209. In one embodiment, the scoring module 213 alsoreceives user profile data, situation data and sensor data from one ormore of the storage 118 and other components of the system 100. Thescoring module 213 adds the user profile data and situation data to therich place data as context. The scoring module 213 retrieves a placeaffinity model for the user from the storage 118 and estimates anaffinity score for the place using the place affinity model based atleast in part on the rich place data, the user profile data, thesituation data and sensor data describing the time and the location,etc. In one embodiment, the scoring module 213 stores the affinity scorein the storage 118.

In another embodiment, the scoring module 213 receives data describing amatching place from the personalization module 217 as described belowwith reference to personalization module 217 and estimates an affinityscore for the matching place. A matching place is a place matching to asearch request from a user. The scoring module 213 sends the affinityscore for the matching place to the personalized module 217.

The scoring module 213 estimates an affinity score for a place asdescribed below. In one embodiment, the scoring module 213 converts thereceived data describing a place to machine learnable data and applies ascore function to estimate an affinity score for the place. For example,the scoring module 213 uses a score function that computes the Euclideandistance, in a way similar to the nearest neighbor calculation inunsupervised classification algorithms. In one embodiment, the scorefunction is based on a distance-from-unity metric as described below.

For a place to be scored, the scoring module 213 projects the likelihoodprobabilities for the values of its attributes (or properties) onorthogonal axes. In one embodiment, the place's attributes (orproperties) are represented as values as depicted in the machinelearnable table 1600. For a value of a property, the scoring module 213calculates the likelihood probability as P (‘value’|preferred) based onthe frequency count table of that column. On each axis, the likelihoodprobability is projected as a continuous numeric function with a maximumpossible score of 1.0 for a value that is always preferred, and aminimum score of 0.0 for a value that is absent from the table 1600. Thescoring module 213 projects the place as a point in themulti-dimensional space. The scoring module 213 assumes that a placealways preferred by the user will have its likelihood value 1.0 on allaxes. The point representing the place has the co-ordinates (1.0, 1.0,1.0, 1.0, 1.0 . . . ) in the multi-dimensional space. The scoring module213 defines this point as “Unity” and calculates a Euclidean distancebetween a projected point for a place to be scored and the “Unity”point. In one embodiment, the scoring module 213 uses the Euclideandistance as the affinity score for the place and a place with a minimumdistance to the “Unity” is the most preferred place for the user.

The properties of the place are represented as values including numericvalues, string values and nominal values, as depicted in the machinelearnable table 1600. The scoring module 213 calculates probabilitiesfor numeric values using a Gaussian distribution. In one embodiment, thescoring module 213 also normalizes the probability density function bydividing it by the probability density of the mean. This scales thedistance to a range between zero and one. The scoring module 213calculates probabilities for the string values as similar to aNaïve-Bayes probability based document similarity metric. The scoringmodule 213 calculates probabilities for the nominal values as theprobabilities of the symbol occurring in the column of the table.

In one embodiment, the scoring module 213 explodes the attribute (orproperty) into its own hyperspace and calculates the distance of theinner objects to the “Unity” point in the hyperspace. The scoring module213 then normalizes the distance to a value between zero and one bydividing it by the distance from origin to the unity point in thehyperspace. The scoring module 213 collapses the hyperspace for theattribute back to a single axis and the normalized distance becomes adistance from the “Unity” point on the single axis in the originalmulti-dimensional space. For a multivalued property, the scoring module213 takes the average of the distances of all its values.

The following is an example of scoring an affinity for a place based onthe method discussed above according to one embodiment. Taking advantageof the data describing banks depicted in the table 1600, the scoringmodule 213 calculates an affinity score (or a distance) for the ABCBank. The calculation is shown as follows:

${{D\left( {BofABC}_{\_ 94096} \right)} = \sqrt{\begin{matrix}\begin{matrix}\begin{matrix}{\left( {1 - {P\left( {{ABC}\mspace{14mu} {Bank}} \middle| {preferred} \right)}} \right)^{2} +} \\{\left( {1 - {P\left( 2353 \middle| {preferred} \right)}} \right)^{2} +}\end{matrix} \\{\left( {1 - {P\left( {TRUE} \middle| {preferred} \right)}} \right)^{2} +}\end{matrix} \\{\left( {1 - {P\left( 4.5 \middle| {preferred} \right)}} \right)^{2} + {D\left( {\_:x} \right)}^{2}}\end{matrix}}},{{{where}\mspace{14mu} {D\left( {\_:x} \right)}} = {\sqrt{\frac{\begin{matrix}{\left( {1 - {F\left( {{}_{}^{}{}_{}^{}} \middle| {preferred} \right)}} \right)^{2} +} \\\left( {1 - {F\left( {{\,^{''}138}\mspace{14mu} {Murphy}\mspace{14mu} {{St}.^{''}}} \middle| {preferred} \right)}} \right)^{2}\end{matrix}}{2}}.}}$

In another embodiment, the scoring module 213 applies another scoringfunction based on Naïve-Bayes classification algorithms to score anaffinity for a place. For one place to be scored, the scoring module 213calculates the Naïve-Bayes probability of it being preferred. For twoplaces to be scored, the scoring module 213 compares the probabilitiesof them being preferred and determines which one of them is more likelyto be preferred by the user. For example, the scoring module 213calculates the probability for ABC Bank being preferred in the exampleshown in FIG. 16 as follows:

${P\left( {preferred} \middle| {{Bof}\mspace{14mu} {ABC\_}94086} \right)} = {{P({preferred})} \times \frac{P\left( {{\,^{''}{ABC}}\mspace{14mu} {Bank}^{''}} \middle| {preferred} \right)}{P\left( {{ABC}\mspace{14mu} {Bank}} \right)} \times \frac{P\left( 2353 \middle| {preferred} \right)}{P(2359)} \times \frac{P\left( {TRUE} \middle| {preferred} \right)}{P({TRUE})} \times \frac{P\left( 4.5 \middle| {preferred} \right)}{P(4.5)} \times \frac{P\left( {\_:\left. x \middle| {preferred} \right.} \right)}{P\left( {\_:x} \right)}}$${Where},{\frac{P\left( {\_:\left. x \middle| {preferred} \right.} \right)}{P\left( {\_:x} \right)} = {\frac{P\left( {{}_{}^{}{}_{}^{}} \middle| {preferred} \right)}{P\left( {{}_{}^{}{}_{}^{}} \right)} \times {\frac{P\left( {{\,^{''}123}\mspace{14mu} {Murphy}\mspace{14mu} {{St}.^{''}}} \middle| {preferred} \right)}{P\left( {{\,^{''}123}\mspace{14mu} {Murphy}\mspace{14mu} {{St}.^{''}}} \right)}.}}}$

The updating module 215 is code and routine for updating a placeaffinity model. In one embodiment, instead of building the entirepreference model from scratch every time when a new place is added, theupdating module 215 applies an incremental approach to build thepreference module. For example, once a new place is received, theupdating module 215 retrieves a place affinity model for a user from thestorage 118 and updates the place affinity model for the user based atleast in part on place data describing the new place that a user hasvisited.

In one embodiment, the updating module 215 retrieves a previous state ofthe place affinity model for the user from the model data describedbelow with reference to FIG. 3A. In one embodiment, the updating module215 generates a place affinity model associated with the user based atleast in part on the rich place data and the previous state of the placeaffinity model as described below with reference to FIG. 3A. In anotherembodiment, the updating module 215 retrieves a default standard-userplace affinity model from model data described below with reference toFIG. 3A and generates a place affinity model associated with the userbased at least in part on the rich place data and the defaultstandard-user place affinity model. In yet another embodiment, theupdating module 215 retrieves an average-user place affinity model fromthe model data described below with reference to FIG. 3A and generates aplace affinity model associated with the user based at least in part onthe rich place data and the average-user place affinity model.

In one embodiment, the updating module 215 optimizes the place affinitymodel so that it only contains a certain number of most recent preferredplaces. In this way, the performance of the model would not startdegrading due to the increasing size of the model. The updating module215 also does optimization to reduce disk writes by using a delayedwrite of the preference model. The updating module 215 is described inmore detail below with reference to FIGS. 12A-12B.

The personalization module 217 is code and routines for providing apersonalized search result to a user. The personalization module 217provides a personalized result to a user based on the user's request.For example, a user searches for banks nearby using the navigationsystem 102, when in a place the user does not know much about. Thepersonalization module 217 cooperates with other components in thesystem 100 to provide a personalized search result to the user.

The personalization module 217 receives a search request from a user tosearch for a place (e.g., a bank, a gas station, etc.) and inquires thesearch server 124 for one or more matching results. The search server124 returns one or more matching places matched to the search request tothe personalization module 217. In one embodiment, the personalizationmodule 217 searches one or more data sources to determine one or morematching places matched to the search request. The personalizationmodule 217 sends the matching places to the scoring module 213 andinstructs the scoring module 213 to generate an affinity score for eachmatching place. The personalization module 217 personalizes the matchingplaces based at least in part on the affinity scores and presents apersonalized result to the user. The personalization module 217 isdescribed below in more detail with reference to FIG. 14.

In one embodiment, the number of matching places displayed to a userdriving a vehicle is restricted for safety considerations to minimizedistractions for the user. The personalization module 217 sorts thematching places in an order based at least in part on the affinityscores and determines one or more matching places with the highestaffinity scores as the personalized results presented to the user.

In one embodiment, the system 100 is particular advantageous since, forexample, the place estimation module 205 automatically estimates anyplace that a user has visited based at least in part on a location ofthe vehicle. In one embodiment, the location of the vehicle is differentfrom the place the user visits since, for example, the user may park avehicle on a street and visits a store across the street. Furthermore,the liking module 207 automatically determines whether the user likesthe visited place and does not require any manual inputs from the user.In one embodiment, the place affinity module 112 establishes a placeaffinity model that is able to estimate an affinity score for both ahistorical place that the user has visited and a new place that the userhas not visited before.

Storage 118

FIG. 3A is a block diagram 300 illustrating storage 118 according to oneembodiment. The storage 118 includes sensor data 301, user data 303,historical place data 305, geospatial place look-up table 307, like data309, liked place data 311, rich place data 313, model data 315 andaffinity score data 317. The like data 309 and liked place data 311 aredepicted in FIG. 3A using dashed lines to indicate that in oneembodiment they are included in the historical place data 305. Oneskilled in the art will recognize that the storage 118 may include otherdata for providing functionality described herein.

The sensor data 301 includes location data and timestamp data from oneor more of the GPS 110 and the sensor 170. The location data describe alocation of a vehicle. The timestamp data describes different times ofthe day that can be used to estimate a time spent at a place. Forexample, the sensor 170 determines a time spent at a place based on thetime difference between a first timestamp and a second timestamp. In oneembodiment, the location data and timestamp data are used to determine asituation for a user.

The user data 303 includes one or more of the identification data, theuser authentication data and user profile data. The identification dataand the user authentication data are used to authenticate one or moreusers. The user profile data describes a user's interests, hobbies, etc.In one embodiment, the user profile data also describes one or moresocial connections of the user. The user profile data for a user can beadded to the context of the rich place data for generating a placeaffinity model for the user.

The historical place data 305 describes one or more places that a userhas visited. The one or more places that a user has visited are alsoreferred to as one or more POIs that the user has visited. In oneembodiment, the historical place data 305 also includes like data 309associated with the one or more visited places indicating if a userlikes them or not. For example, the historical place data 305 includesdata describing one or more of each place visited by a user, a visitingfrequency to the place, a time spent at the place for each visit to theplace and like data 309 for the place. In one embodiment, the historicalplace data 305 also includes liked place data 311 describing one or moreplaces that a user likes.

The geospatial place look-up table 307 is a table used to look up forcandidate places associated with a vehicle location. For example, theplace estimation module 205 receives location data describing a vehiclelocation from the sensor 170 and queries the geospatial place look-uptable 307 for candidate places within a certain range (e.g., 100 meters)of the vehicle location.

The like data 309 is data indicating if a user likes a place or not. Inone embodiment, the liking module 207 determines the like data 309 for aplace. If the liking module 207 determines that a user likes a place,the place is referred to as a liked place or a preferred place.Alternatively, the like data describes that the user does not like aplace. The like data 309 is depicted using a dashed line in the FIG. 3Ato indicate that it can be stored along with one or more places includedin the historical place data 305.

The liked place data 311 describes one or more liked places that a userlikes. In one embodiment, the liking module 207 determines one or moreliked places and stores them in the storage 118. The liked place data311 is depicted in the FIG. 3A using a dashed line to indicate that itcan be alternatively stored in the historical place data 305.

The rich place data 313 is a variety of data associated with a place fora user from a plurality of data sources. For example, the gatheringmodule 209 retrieves data for a liked place from one or more of thehistorical place data stored in the storage 118, the search server 124,the web server 138, the mobile device 134, the client 130 and the socialnetwork server 120, etc. The rich place data 313 as well as other datasuch as the sensor data 301 is used to generate a place affinity modelfor a user. In one embodiment, the rich place data 313 includes anaffinity value for a place marked by a user based on inputs fromdifferent sources.

The model data 315 describes one or more place affinity models for auser. For example, a place affinity model characterizes a placepreference for a user and includes model data describing all thefavorite places for the user and the common characteristics for thefavorite places. In one embodiment, the model data 315 includes adefault standard-user place affinity model pre-computed for one or moregroups of users based on empirical evidence. In another embodiment, themodel data 315 includes an average-user place affinity model built byaggregating one or more individual place affinity models for a group ofusers.

The affinity score data 317 describes one or more affinity scores forone or more places that can be either visited by the user or not visitedby the user. In one embodiment, the scoring module 213 estimates anaffinity score for a place using a place affinity model for a user basedat least in part on the rich place data, the user profile data, thesituation data and sensor data describing the time and the location,etc. In another embodiment, the scoring module 213 generates theaffinity scores for matching places to a search request from a user.

FIG. 3B is a block diagram illustrating a place ontology subset 350included in the storage 118 according to one embodiment. The placeontology subset 350 characterizes a concept hierarchy of places based ontheir categories and the properties associated with place types. Element352 is a graphic representation of a data type describing a POI, whichis on the highest level of this ontology 350. Element 362 is a graphicrepresentation of data describing properties associated with the POI352.

Elements 354, 356, 358, 360 are graphic representations of data typesdescribing a grocery store 354, a movie theatre 356, a bank 358 and agas station 360, respectively. They are on a lower level than the POI352. In other words, they are different types of POIs. Element 366 is agraphic representation of data describing properties associated with thebank 358. Element 364 is a graphic representation of data describingproperties associated with the gas station 360.

Methods

FIG. 4 is a flow diagram illustrating a method 400 for identifying auser according to one embodiment. In one embodiment, method 400 isimplemented by the identification module 203. The identification module203 receives 402 identification data for a user from the communicationmodule 201. For example, when a user inputs identification data via aGUI generated by the navigation system 102, the identification module203 receives the identification data for the user via the communicationmodule 201. In one embodiment, the identification data is a user nameand a password.

The identification module 203 retrieves 404 user authentication data forthe user from the user data 303 included in the storage 118 and compares406 the identification data to the user authentication data. Theidentification module 203 identifies 408 the user based on thecomparison. If the identification module 203 determines that theidentification data matches the user authentication data based on thecomparison, then the identification module 203 identifies the user andsends 410 the identification data to other components of the placeaffinity module 112 such as the place estimation module 205.

FIG. 5 is a flow diagram illustrating a method 500 for estimating acurrently visited place according to one embodiment. In one embodiment,method 500 is implemented by the place estimation module 205. The placeestimation module 205 receives 502 sensor data describing a vehiclelocation and a time of the day. Based on the vehicle location, the placeestimation module 205 queries the geospatial place look-up table 307 inthe storage 118 and retrieves 504 candidate place data from thegeospatial place look-up table 307. The candidate place data describesone or more candidate places within a certain range (e.g., 100 meters)of the vehicle location.

The place estimation module 205 receives 506 identification data for auser from the identification module 203 and retrieves 508 historicalplace data based on the identification data for the user. For example,the retrieved historical place data includes one or more places visitedby the user in the past that are close to the vehicle location.

The place estimation module 205 estimates 510 a currently visited placebased at least in part on one or more of the vehicle location, the time,the identification data, the historical place data and the candidateplace data. For example, the place estimation module 205 selects a placefrom the one or more candidate places as a currently visited place basedon the time of the day and the time spent at the place. The placeestimation module 205 stores 512 the estimated currently visited placein the storage 118 as a part of the historical place data for the user.

FIG. 6 is a flow diagram illustrating a method 600 for determining likedata for a currently visited place according to one embodiment. In oneembodiment, method 600 is implemented by the liking module 207. Theliking module 207 receives 602 the currently visited place from theplace estimation module 205 and identification data from theidentification module 203. The liking module 207 also receives 604sensor data describing the time spent on the current visit to thecurrently visited place from the sensor 170 and retrieves 606 a visitingfrequency and time spent for each past visit to the currently visitedplace from the historical place data in the storage 118.

The liking module 207 determines 608 like data for the currently visitedplace based at least in part on one or more of the place data, theidentification data, the time spent for the current visit, the visitingfrequency and the time spent for each past visit. In one embodiment, thelike data describes that the user likes the currently visited place andthe place is referred to as a liked (or preferred) place. In anotherembodiment, the like data indicates that the user does not like theplace and the place is referred as a not-liked (or not-preferred) place.The liking module 207 stores 610 the like data in the storage 118.

FIG. 7 is a flow diagram illustrating a method 700 for forming richplace data for a place according to one embodiment. In one embodiment,method 700 is implemented by the gathering module 209. The gatheringmodule 209 receives 702 identification data for a user from theidentification module 203 and retrieves 704 liked place data describingone or more liked places for the user.

The gathering module 209 collects 706 data associated with the one ormore liked places from a plurality of sources. For example, thegathering module 209 retrieves data for the one or more liked placesfrom one or more of the search server 124, the web server 138, themobile device 134, the client 130 and the social network server 120,etc. For example, the retrieved data includes data describing socialconnections (e.g., friends) of the user on a social network that havevisited one or more of the liked places.

In one embodiment, the gathering module 209 receives 708 an affinityvalue for a place marked by the user. For example, the user marks aplace with an affinity value based on inputs from an interactive dialog,a survey, retrieved personal data from social networks, etc. Thegathering module 209 forms 710 rich place data based on the retrieveddata from a plurality of sources and the affinity value from the user.

FIG. 8 is a flow diagram illustrating a method 800 for generating aplace affinity model for a user according to one embodiment. In oneembodiment, method 800 is implemented by the modeling module 211. Themodeling module 211 receives 802 identification data for a user from theidentification module 203 and rich place data from the gathering module209. The modeling module 211 also retrieves 804 user profile data forthe user from the storage 118 based on the identification data andreceives 806 sensor data from one or more of the sensor 170 and the GPS110. In one embodiment, the sensor data describes a vehicle location anda time.

The modeling module 211 determines 808 situation data describing asituation of the user based on the sensor data. For example, themodeling module 211 determines that the user is out for shopping basedon that the time spent at the place is more than two hours and thevehicle location is at a parking lot of a shopping mall. In oneembodiment, the modeling module 211 retrieves 810 a previous state of aplace affinity model from the model data 315. The modeling module 211estimates 812 a place affinity model for the user based at least in parton the user profile data, the rich place data, the situation data andthe previous state of a place affinity model, etc. For example, a placeaffinity model describes a place preference for a user.

FIG. 9 is a flow diagram illustrating a method 900 for estimating anaffinity score for a place according to one embodiment. In oneembodiment, method 900 is implemented by the scoring module 213. Thescoring module 213 receives 902 place data describing a place associatedwith a user. In one embodiment, the place is a currently visited placeby the user. In another embodiment, the place is a matching place for asearch request from the user.

The scoring module 213 receives 904 identification data for the userfrom the identification module 203 and receives 906 rich place data forthe place from the gathering module 209. The scoring module 213 alsoretrieves 908 user profile data from the storage 118 and sensor data andsituation data from the sensor 170.

The scoring module 213 retrieves 910 a place affinity model for the userfrom the storage 118 and estimates 912 an affinity score for the placeusing the place affinity model based at least in part on the rich placedata, the user profile data, the situation data and sensor data, etc.

FIGS. 10A-10B are flow diagrams illustrating a method 1000 forestimating a currently visited place according to another embodiment.

Referring to FIG. 10A, the communication module 201 receives 1002identification data from a user and sends the identification data to theidentification module 203. The identification module 203 identifies 1004the user based at least in part on the identification data. For example,the identification module 203 identifies the user by comparing theidentification data to the user authorization data stored in the storage118.

The communication module 201 receives 1006 sensor data describing acurrent location for a vehicle and a current time and sends the sensordata to the place estimation module 205. The communication module 201retrieves 1008 candidate place data from a geospatial look-up table ofplaces based at least in part on the location of the vehicle. In oneembodiment, the candidate place data includes one or more candidateplaces within a pre-determined distance to the location of the vehicle.The communication module 201 retrieves 1010 historical place dataassociated with the user from the storage 118. The communication module201 sends the candidate place data and the historical place data to theplace estimation module 205.

The place estimation module 205 estimates 1012 a currently visited placefor the user based at least in part on one or more of the sensor data,the candidate place data and the historical place data. The placeestimation module 205 stores 1014 the currently visited place in thestorage 118. In one embodiment, the place estimation module 205 sendsthe currently visited place to the liking module 207. The sensor 170estimates 1016 a time spent at the currently visited place for the user.

Referring now to FIG. 10B, the liking module 207 retrieves 1018 avisiting frequency for the currently visited place and the time spent atthe place for each past visit from the historical place data stored inthe storage 118. The liking module 207 determines 1020 like data for thecurrently visited place based at least in part on the visiting frequencyand the time spent for each visit to the place. The liking module 207stores 1024 the like data in the storage 118.

FIG. 11 is a flowchart illustrating a method 1100 for generating a placeaffinity model according to one embodiment. The communication module 201receives 1102 identification data for a user and sends theidentification data to the identification module 203. The identificationmodule 203 identifies 1104 the user based at least in part on theidentification data and sends the identification data for the user toone or more of the gathering module 209 and the modeling module 211. Thecommunication module 201 retrieves 1106 liked place data describing oneor more liked places for the user from the storage 118 and sends theliked place data to the gathering module 209. Alternatively, in oneembodiment, the communication module 201 retrieves place data describingone or more places associated with the user, where the one or moreplaces include both one or more liked places and one or more not-likedplaces.

The gathering module 209 collects 1108 additional data for the one ormore liked places from a plurality of data sources (e.g., a socialnetwork provided by the social network application 122, the searchserver 124, the web server 138, etc.) to form rich place data for theone or more liked places. The gathering module 209 sends the rich placedata to the modeling module 211.

The communication module 201 retrieves 1110 user profile data for theuser from the storage 118 and sends the user profile data to themodeling module 211. The communication module 201 receives 1112 sensordata describing one or more of a vehicle location and a current time,etc. In one embodiment, the sensor data includes other data such astemperature data, traffic condition data, etc. The communication module201 sends the sensor data to the modeling module 211. The modelingmodule 211 determines 1114 situation data describing a situation for theuser based at least in part on the sensor data. The modeling module 211generates 1116 a place affinity model for the user based at least inpart on one or more of the rich place data, the user profile data, thesensor data and the situation data, etc. The modeling module 211 stores1118 the place affinity model in the storage 118.

FIGS. 12A-12B are flow diagrams illustrating a method 1200 for updatinga place affinity model according to one embodiment.

Referring to FIG. 12A, the communication module 201 receives 1202identification data for a user and sends the identification data to theidentification module 203. The identification module 203 identifies 1204the user based at least in part on the identification data and sends theidentification data for the user to the gathering module 209 and theupdating module 215. The gathering module 209 receives 1206 place datadescribing a new place that the user has visited. In one embodiment, thegathering module 209 receives the place data from the place estimationmodule 205. In another embodiment, the gathering module 209 retrievesthe place data from the historical place data stored in the storage 118via the communication module 201.

The gathering module 209 collects 1208 data from a plurality of datasources to form rich place data for the new place and sends the richplace data to the updating module 215. The communication module 201retrieves 1210 user profile data from the storage 118 and sends the userprofile data to the updating module 215. The communication module 201receives 1212 sensor data from the sensor 170 and sends the sensor datato the updating module 215. The updating module 215 determines 1214situation data describing a situation for the user based at least inpart on the sensor data.

Referring now to FIG. 12B, the communication module 201 retrieves 1216model data describing a place affinity model associated with the userfrom the storage 118 and sends the model data to the updating module215. In one embodiment, the communication module 201 retrieves aprevious state of a place affinity model associate with the user fromthe storage 118 and sends it to the updating module 215. In anotherembodiment, the communication module 201 retrieves a pre-computeddefault standard user place affinity model from the storage 118 andsends it to the updating module 215. In yet another embodiment, thecommunication module 201 retrieves an average-user place affinity modelfrom the storage 118 and sends it to the updating module 215.

The updating module 215 updates 1218 the place affinity model associatedwith the user based at least in part on one or more of the rich placedata for the new place, the user profile data, the sensor data and thesituation data. The updating module 215 stores 1220 the updated placeaffinity model in the storage 118.

FIGS. 13A-13B are flow diagrams illustrating a method 1300 forestimating an affinity score for a place according to anotherembodiment. In one embodiment, the place is a place that a user hasvisited. In another embodiment, the place is a place that the user hasnot visited before.

Referring to FIG. 13A, the communication module 201 receives 1302identification data for a user and sends the identification data to theidentification module 203. The identification module 203 identifies 1304the user based at least in part on the identification data and sends theidentification data for the user to one or more of the gathering module209, the modeling module 211 and the scoring module 213. In oneembodiment, the gathering module 209 receives 1306 place data describingthe place from one of a user, the communication module 201, thepersonalization module 217, etc. The gathering module 209 collects 1308data from a plurality of data sources to form rich place data for theplace and sends the rich place data to the scoring module 213.

The communication module 201 retrieves 1310 user profile data from thestorage 118 and sends the user profile data to the scoring module 213.The communication module 201 receives 1312 sensor data from the sensor170 and sends the sensor data to the modeling module 211. The modelingmodule 211 determines 1314 situation data describing a situation for theuser based at least in part on the sensor data and sends the situationdata to the scoring module 213.

Referring now to FIG. 13B, the scoring module 213 loads 1316 a placeaffinity model for the user from the storage 118. The scoring module 213applies the place affinity model to estimate 1318 an affinity score forthe user based at least in part on one or more of the rich place data,the sensor data, the situation data and the user profile data. Thescoring module 213 stores the affinity score for the place in thestorage 118.

FIG. 14 is a flow diagram illustrating a method 1400 for personalizing aplace search result for a user according to one embodiment. Thecommunication module 201 receives 1402 identification data for a userand sends the identification data to the identification module 203. Theidentification module 203 identifies 1404 the user based at least inpart on the identification data and sends the identification data forthe use to one or more of the scoring module 213 and the personalizationmodule 217.

The communication module 201 receives 1406 a search request from theuser searching for one or more POIs. The communication module 201 sendsthe search request to the personalization module 217. Thepersonalization module 217 determines 1408 one or more matching placesmatched to the search request. For example, the personalization module217 instructs the search module 126 to search for one or more matchingplaces and receives the matching places from the search module 126. Thepersonalization module 217 sends the one or more matching places to thescoring module 213.

The scoring module 213 loads 1410 a place affinity model associated withthe user from the storage 118. The scoring module 213 applies the placeaffinity model to determine 1412 an affinity score for each matchingplace and sends the one or more affinity scores for the one or morematching places to the personalization module 217. The personalizationmodule 217 orders 1414 the one or more matching places based at least inpart on the one or more affinity scores. The personalization module 217presents 1416 a personalized result to the user. For example, thepersonalization module 217 presents to the user a personalized resultthat includes one or more matching places having the highest affinityscores.

Example of Place Estimation

FIG. 15 is a graphical representation 1500 illustrating three examples(A, B, C) for estimating a currently visited place for a user accordingto one embodiment. Element 1502 is a graphic location of the vehicle(e.g., a graphic vehicle location) in each example A, B, C. Element 1504is a graphic circle defining a pre-determined range (e.g., 100 meters)around the vehicle location 1502. The vehicle location 1502 is at thecenter of the each circle 1504 in each example A, B, C. Elements 1506 a,1508 a, 1510 a are graphic crosses representing candidate places closeto the vehicle location 1502 in the example A. Element 1506 a is agraphic solid cross representing a determined currently visited placefor the user in the example A. In the illustrated example A, thecurrently visited place 1506 a is determined based on historical placedata describing one or more places that the user visited before.

Element 1506 b, 1508 b, 1510 b are graphic crosses representingcandidate places close to the vehicle location 1502 in the example B.Element 1506 b is a graphic solid cross representing a determinedcurrently visited place for the user in the example B. In theillustrated example B, the place estimation module 205 selects the place1506 b from the candidate places 1506 b, 1508 b, 1510 b as the currentlyvisited place 1506 a based on that the place 1506 b is within a walkabledistance to the vehicle location 1502.

Element 1506 c, 1508 c, 1510 c are graphic crosses representingcandidate places close to the vehicle location 1502 in the example C.Element 1506 c is a graphic solid cross representing a determinedcurrently visited place for the user in the example C. In theillustrated example C, the place estimation module 205 determines thecurrently visited place 1506 c from the candidate places based on thecurrent time of the day and the time spent at the place. For example,the current time is noon and the time spent at the place is one hour.Then the place estimation module 205 determines that the restaurant 1506c is most likely the place currently visited by the user.

Machine Learnable Data

FIG. 16 shows a table 1600 illustrating machine learnable data accordingto one embodiment. The table 1600 contains training data that one ormore of the modeling module 211 and the scoring module 213 use whenapplying conventional machine learning techniques. All data belonging toa certain type are grouped together in the single table 1600. Forexample, FIG. 16 shows the table 1600 for banks Row 1612 of the table1600 includes data for “XYZ bank;” row 1614 of the table 1600 includesdata for “ABC Bank.” The URI for the data can either be dropped from thetraining (since row identifier usually does not contribute to the learntmodel) or can alternatively be added as a new column in the table suchas the table 1600. In one embodiment, the modeling module 211 adds theURI as a new column in the table such as the table 1600 to bias theplace affinity model with a higher preference to a previously visitedplace.

Columns 1602, 1604, 1606, 1608, 1610 in the table 1600 includeproperties for the banks. For example, column 1602 includes names forthe banks Column 1604 includes locations for the banks. In theillustrated embodiment, another table 1650 is linked to the column 1604describing the locations for the banks, e.g., including addresses,cities, etc. Column 1606 includes distances from work to the banksColumn 1608 includes a property of having a drive-through ATM. Column1610 includes ratings for the banks.

Class Column 1612 includes class values for the banks. For example, theclass values include a “preferred” that indicates a user likes orprefers the bank, as well as a “not preferred” that indicates a userdoes not like or prefer the bank. In one embodiment, if the bank is aplace visited by the user before, it is marked as “preferred.” Inanother embodiment, the modeling module 211 determines a place asbelonging to the class “not preferred” if it is not selected by the userwhile performing a POI search.

Evaluation

FIG. 17 is a chart 1700 illustrating accuracy evaluations for twoscoring mechanisms according to one embodiment. The accuracy evaluationsare done based on dummy users such as computer programs that are able toperform selections of POIs based on embedded user profiles. Each dummyuser performs a POI search for places belonging to a category (e.g.,restaurants, banks, grocery stores, gas stations, etc.) andprogrammatically selects one or more places based on its profile. Inother words, each dummy user is characterized by its profile and alwaysselects a place based on its profile. The accuracy evaluations are basedon a set of 25 POI searches, such as “find a restaurant near theairport”, “find a coffee shop in Santa Cruz while driving to SanFrancisco for a break”, etc.

The chart 1700 includes a y-axis representing accuracies of the twoscoring methods 1702 and a chart legend 1704. The chart legend 1704describes profiles for the dummy users. For example, a dummy user havinga “Brand” profile always selects certain brands such as X Coffee,Toyota, etc. A “Categories” profile indicates that the user alwaysselects places belonging to certain sub-categories (e.g., Japaneserestaurant, etc.). A user with a “Highest Rated” profile always selectsthe highest rated places; a user having a “Nearest” profile alwaysselects the nearest places. A user having a “Person” profile is modeledbased on the preferences of a real person after interviewing the realperson with a set of questions. A user having a “System order” profilealways trusts the system 100 and selects the first item in the placelist sorted by the system 100. The chart legend 1704 also include an“Average” item indicating that the “Average” bars in the chart 1700describe average accuracies over all other bars for the same scoringmethod.

The chart 1700 includes two groups of bars indicating accuracies for theDistance-from-Unity Scoring method and the Naïve-Bayes ProbabilityScoring method, respectively. The accuracy represents the percentage ofsuccessful searches. For example, a list of matching places for a searchis provided and sorted based on either scoring method. If the dummy userselects the first place in the list, then the search is counted as asuccessful one. In the illustrated chart 1700, each group of barsdescribes different accuracies for different kinds of dummy users (e.g.,users with different profiles) based on either of the two scoringmethods.

GUI

FIG. 18 shows screenshots 1800, 1850, of place search results for a useraccording to one embodiment. The place search results are obtained usingthe Distance-from-Unity scoring method. The place search result 1800displays search results for banks in the user's daily commute area.Banks 1802, 1804 are marked with stars to indicate that they have beenvisited by the user and are used to build the place affinity model(e.g., preference model) for the user.

The place search result 1850 provides the matching banks when the usersearches banks in a new area. In the illustrated embodiment, the placesearch result 1850 shows top three matching banks, among which two banksare preferred by the user. For example, the two preferred banks are bothABC Banks in different locations. The user prefers a specific bankingcompany and the place search result 1850 proves that the underlyingplace affinity model (e.g., preference model) for the user is able todetect the preference of the user and can be used to personalize theplace search result for the user.

In the forgoing description, for purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the specification. It will be apparent, however, to oneskilled in the art that the embodiments can be practiced without thesespecific details. In other instances, structures and devices are shownin block diagram form in order to avoid obscuring the specification. Forexample, the specification is described in one embodiment below withreference to user interfaces and particular hardware. However, thedescription applies to any type of computing device that can receivedata and commands, and any peripheral devices providing services.

Reference in the specification to “one embodiment” or “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiment is included in at least oneembodiment. The appearances of the phrase “in one embodiment” in variousplaces in the specification are not necessarily all referring to thesame embodiment.

Some portions of the detailed descriptions that follow are presented interms of algorithms and symbolic representations of operations on databits within a computer memory. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self consistent sequence of steps leading to a desiredresult. The steps are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic signals capable of being stored,transferred, combined, compared and otherwise manipulated. It has provenconvenient at times, principally for reasons of common usage, to referto these signals as bits, values, elements, symbols, characters, terms,numbers or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the following discussion,it is appreciated that throughout the description, discussions utilizingterms such as “processing” or “computing” or “calculating” or“determining” or “displaying” or the like, refer to the action andprocesses of a computer system, or similar electronic computing device,that manipulates and transforms data represented as physical(electronic) quantities within the computer system's registers andmemories into other data similarly represented as physical quantitieswithin the computer system memories or registers or other suchinformation storage, transmission or display devices.

The specification also relates to an apparatus for performing theoperations herein. This apparatus may be specially constructed for therequired purposes, or it may comprise a general-purpose computerselectively activated or reconfigured by a computer program stored inthe computer. Such a computer program may be stored in a computerreadable storage medium, such as, but is not limited to, any type ofdisk including floppy disks, optical disks, compact disc read-onlymemories (CD-ROMs), magnetic disks, read-only memories (ROMs), randomaccess memories (RAMs), erasable programmable read-only memories(EPROMs), electrically erasable programmable read-only memories(EEPROMs), magnetic or optical cards, flash memories including universalserial bus (USB) keys with non-volatile memory or any type of mediasuitable for storing electronic instructions, each coupled to a computersystem bus.

Some embodiments can take the form of an entirely hardware embodiment,an entirely software embodiment or an embodiment containing bothhardware and software elements. A preferred embodiment is implemented insoftware, which includes but is not limited to firmware, residentsoftware, microcode, etc.

Furthermore, some embodiments can take the form of a computer programproduct accessible from a computer-usable or computer-readable mediumproviding program code for use by or in connection with a computer orany instruction execution system. For the purposes of this description,a computer-usable or computer-readable medium can be any apparatus thatcan contain, store, communicate, propagate, or transport the program foruse by or in connection with the instruction execution system,apparatus, or device.

A data processing system suitable for storing and/or executing programcode will include at least one processor coupled directly or indirectlyto memory elements through a system bus. The memory elements can includelocal memory employed during actual execution of the program code, bulkstorage, and cache memories which provide temporary storage of at leastsome program code in order to reduce the number of times code must beretrieved from bulk storage during execution.

Input/output or I/O devices (including but not limited to keyboards,displays, pointing devices, etc.) can be coupled to the system eitherdirectly or through intervening I/O controllers.

Network adapters may also be coupled to the system to enable the dataprocessing system to become coupled to other data processing systems orremote printers or storage devices through intervening private or publicnetworks. Modems, cable modems and Ethernet cards are just a few of thecurrently available types of network adapters.

Furthermore, the algorithms and displays presented herein are notinherently related to any particular computer or other apparatus.Various general-purpose systems may be used with programs in accordancewith the teachings herein, or it may prove convenient to construct morespecialized apparatus to perform the required method steps. The requiredstructure for a variety of these systems will appear from thedescription below. In addition, the specification is not described withreference to any particular programming language. It will be appreciatedthat a variety of programming languages may be used to implement theteachings of the various embodiments as described herein.

Finally, the foregoing description of the embodiments has been presentedfor the purposes of illustration and description. It is not intended tobe exhaustive or to limit the specification to the precise formdisclosed. Many modifications and variations are possible in light ofthe above teaching. It is intended that the scope of the embodiments belimited not by this detailed description, but rather by the claims ofthis application. As will be understood by those familiar with the art,the examples may be embodied in other specific forms without departingfrom the spirit or essential characteristics thereof. Likewise, theparticular naming and division of the modules, routines, features,attributes, methodologies and other aspects are not mandatory orsignificant, and the mechanisms that implement the description or itsfeatures may have different names, divisions and/or formats.Furthermore, as will be apparent to one of ordinary skill in therelevant art, the modules, routines, features, attributes, methodologiesand other aspects of the specification can be implemented as software,hardware, firmware or any combination of the three. Also, wherever acomponent, an example of which is a module, of the specification isimplemented as software, the component can be implemented as astandalone program, as part of a larger program, as a plurality ofseparate programs, as a statically or dynamically linked library, as akernel loadable module, as a device driver, and/or in every and anyother way known now or in the future to those of ordinary skill in theart of computer programming. Additionally, the specification is in noway limited to implementation in any specific programming language, orfor any specific operating system or environment. Accordingly, thedisclosure is intended to be illustrative, but not limiting, of thescope of the specification.

What is claimed is:
 1. A computer-implemented method, comprising:receiving sensor data for a vehicle associated with a user, the sensordata describing a current vehicle location; retrieving candidate placedata describing one or more candidate places within a range of thevehicle location; retrieving historical place data describing one ormore places visited by the user in the past; and estimating a currentlyvisited place for the user based at least in part on the one or more ofthe current vehicle location, the candidate place data and thehistorical place data.
 2. The method of claim 1 further comprising:estimating a first time period spent at the estimated currently visitedplace; retrieving a visiting frequency for the estimated currentlyvisited place and a second time period spent on a past visit to theestimated currently visited place; and determining like data for theestimated currently visited place, the like data indicating if the userlikes the estimated currently visited place.
 3. The method of claim 1,wherein estimating a currently visited place for the user based at leastin part on the one or more of the current vehicle location, thecandidate place data and the historical place data comprises choosing aplace from the one or more candidate places as the currently visitedplace based on a current time of the day and a time period spent at thecurrently visited place.
 4. The method of claim 1, wherein estimating acurrently visited place for the user based at least in part on the oneor more of the current vehicle location, the candidate place data andthe historical place data comprises selecting among the one or morecandidate places a place within a walkable distance to the currentvehicle location as the currently visited place.
 5. The method of claim1, wherein the currently visited place is one of the one or morecandidate places and also one of the one or more places visited by theuser in the past.
 6. A system, comprising: a communication module forreceiving sensor data for a vehicle associated with a user, the sensordata describing a current vehicle location, the communication moduleretrieving candidate place data describing one or more candidate placeswithin a range of the current vehicle location, the communication moduleretrieving historical place data describing one or more places visitedby the user in the past; and a place estimation module communicativelycoupled to the communication module for receiving one or more of thesensor data, the candidate place data and the historical place data, theplace estimation module estimating a currently visited place for theuser based at least in part on the one or more of the current vehiclelocation, the candidate place data and the historical place data.
 7. Thesystem of claim 6 further comprising a sensor communicatively coupled tothe communication module, the sensor estimating a first time periodspent at the estimated currently visited place.
 8. The system of claim 7further comprising a liking module communicatively coupled to thecommunication module and the sensor, the liking module receiving thefirst time period spent at the estimated currently visited place andretrieving a visiting frequency for the estimated currently visitedplace and a second time period spent on a past visit to the estimatedcurrently visited place, the liking module further determining like datafor the estimated currently visited place, the like data indicating ifthe user likes the estimated currently visited place.
 9. The system ofclaim 6, wherein estimating a currently visited place for the user basedat least in part on the one or more of the current vehicle location, thecandidate place data and the historical place data comprises choosing aplace from the one or more candidate places as the currently visitedplace based on a current time of the day and a time period spent at thecurrently visited place.
 10. The system of claim 6, wherein estimating acurrently visited place for the user based at least in part on the oneor more of the current vehicle location, the candidate place data andthe historical place data comprises selecting among the one or morecandidate places a place within a walkable distance to the currentvehicle location as the currently visited place.
 11. The system of claim6, wherein the currently visited place is one of the one or morecandidate places and also one of the one or more places visited by theuser in the past.
 12. A computer program product comprising anon-transitory computer readable medium encoding instructions that, inresponse to execution by a computing device, cause the computing deviceto perform operations comprising: receiving sensor data for a vehicleassociated with a user, the sensor data describing a current vehiclelocation; retrieving candidate place data describing one or morecandidate places within a range of the current vehicle location;retrieving historical place data describing one or more places visitedby the user in the past; and estimating a currently visited place forthe user based at least in part on the one or more of the currentvehicle location, the candidate place data and the historical placedata.
 13. The computer program product of claim 12, wherein instructionsencoded in the computer readable medium when executed cause thecomputing device to perform operations further comprising: estimating afirst time period spent at the estimated currently visited place;retrieving a visiting frequency for the estimated currently visitedplace and a second time period spent on a past visit to the estimatedcurrently visited place; and determining like data for the estimatedcurrently visited place, the like data indicating if the user likes theestimated currently visited place.
 14. The computer program product ofclaim 12, wherein estimating a currently visited place for the userbased at least in part on the one or more of the current vehiclelocation, the candidate place data and the historical place datacomprises choosing a place from the one or more candidate places as thecurrently visited place based on a current time of the day and a timeperiod spent at the currently visited place.
 15. The computer programproduct of claim 12, wherein estimating a currently visited place forthe user based at least in part on the one or more of the currentvehicle location, the candidate place data and the historical place datacomprises selecting among the one or more candidate places a placewithin a walkable distance to the current vehicle location as thecurrently visited place.
 16. The computer program product of claim 12,wherein the currently visited place is one of the one or more candidateplaces and also one of the one or more places visited by the user in thepast.
 17. A computer-implemented method, comprising: receiving a placeassociated with a user; retrieving rich place data associated with theplace; retrieving user profile data for the user; retrieving a previousstate of a place affinity model associated with the user; generating theplace affinity model associated with the user based at least in part onthe rich place data and the previous state of the place affinity model.18. The method of claim 17, wherein the place is marked with an affinityvalue by the user based at least in part on inputs from one or more ofan interactive dialog, a survey and retrieved personal data from one ormore social networks.
 19. The method of claim 17, wherein the rich placedata comprises one or more of historical place data for the place,social data describing one or more social connections of the user thathave visited the place and web data describing one or more reviews forthe place.
 20. The method of claim 17, wherein the place affinity modelcomprises model data describing one or more favorite places for the userand one or more common characteristics for the one or more favoriteplaces.
 21. The method of claim 17 further comprising: receiving sensordata describing a current time of the day and a current vehiclelocation; and determining a situation for the user based at least inpart on the sensor data, wherein the situation for the user and thesensor data are used to estimate the place affinity model.
 22. Themethod of claim 17 further comprising: receiving a new place; retrievingnew rich place data associated with the new place; retrieving the placeaffinity model associated with the user; and updating the place affinitymodel associated with the user based at least in part on the new richplace data.
 23. A system, comprising: a communication module forreceiving a place associated with a user, the communication moduleretrieving user profile data for the user; a gathering modulecommunicatively coupled to the communication module for retrieving richplace data associated with the place; and a modeling modulecommunicatively coupled to the gathering module for receiving the richplace data, the modeling module retrieving a previous state of a placeaffinity model associated with the user and generating the placeaffinity model associated with the user based at least in part on therich place data and the previous state of the place affinity model. 24.The system of claim 23, wherein the place is marked with an affinityvalue by the user based at least in part on inputs from one or more ofan interactive dialog, a survey and retrieved personal data from one ormore social networks.
 25. The system of claim 23, wherein the rich placedata comprises one or more of historical place data for the place,social data describing one or more social connections of the user thathave visited the place and web data describing one or more reviews forthe place.
 26. The system of claim 23, wherein the place affinity modelcomprises model data describing one or more favorite places for the userand one or more common characteristics for the one or more favoriteplaces.
 27. The system of claim 23, wherein the communication modulereceives sensor data describing a current time of the day and a currentvehicle location and the modeling module determines a situation for theuser based at least in part on the sensor data, wherein the situationfor the user and the sensor data are used to estimate the place affinitymodel.
 28. The system of claim 23, wherein the gathering module receivesa new place and retrieves new rich place data associated with the newplace.
 29. The system of claim 28 further comprising a updating modulecommunicatively coupled to the gathering module, the updating moduleretrieving the place affinity model associated with the user andupdating the place affinity model associated with the user based atleast in part on the new rich place data.
 30. A computer program productcomprising a non-transitory computer readable medium encodinginstructions that, in response to execution by a computing device, causethe computing device to perform operations comprising: receiving a placeassociated with a user; retrieving rich place data associated with theplace; retrieving user profile data for the user; retrieving a previousstate of a place affinity model associated with the user; and generatingthe place affinity model associated with the user based at least in parton the rich place data and the previous state of the place affinitymodel.
 31. The computer program product of claim 30, wherein the placeis marked with an affinity value by the user based at least in part oninputs from one or more of an interactive dialog, a survey and retrievedpersonal data from one or more social networks.
 32. The computer programproduct of claim 30, wherein the rich place data comprises one or moreof historical place data for the place, social data describing one ormore social connections of the user that have visited the place and webdata describing one or more reviews for the place.
 33. The computerprogram product of claim 30, wherein the place affinity model comprisesmodel data describing one or more favorite places for the user and oneor more common characteristics for the one or more favorite places. 34.The computer program product of claim 30, wherein instructions encodedin the computer readable medium when executed cause the computing deviceto perform operations further comprising: receiving sensor datadescribing a current time of the day and a current vehicle location; anddetermining a situation for the user based at least in part on thesensor data, wherein the situation for the user and the sensor data areused to estimate the place affinity model.
 35. The computer programproduct of claim 30, wherein instructions encoded in the computerreadable medium when executed cause the computing device to performoperations further comprising: receiving a new place; retrieving newrich place data associated with the new place; retrieving the placeaffinity model associated with the user; and updating the place affinitymodel associated with the user based at least in part on the new richplace data.
 36. A computer-implemented method, comprising: receiving aplace; retrieving user profile data associated with a user and a placeaffinity model associated with the user; retrieving rich place dataassociated with the place; and estimating an affinity score for theplace using the place affinity model based at least in part on the richplace data and the user profile data.
 37. The method of claim 36 furthercomprising: receiving sensor data describing a current time of the dayand a current vehicle location; and determining a situation for the userbased at least in part on the sensor data, wherein the situation for theuser and the sensor data are used to generate the affinity score for theplace.
 38. A system, comprising: a gathering module for receiving aplace, the gathering module further retrieving rich place dataassociated with the place; a communication module communicativelycoupled to the gathering module, the communication module retrievinguser profile data associated with a user and a place affinity modelassociated with the user; and a scoring module communicatively coupledto the communication module and the gathering module for receiving oneor more of the rich place data, the user profile data and the placeaffinity model associated with the user, the scoring module estimatingan affinity score for the place using the place affinity model based atleast in part on the rich place data and the user profile data.
 39. Thesystem of claim 38, wherein the communication module receives sensordata describing a current time of the day and a current vehiclelocation.
 40. The system of claim 39 further comprising a modelingmodule communicatively coupled to the communication module, the modelingmodule determining a situation for the user based at least in part onthe sensor data, wherein the situation for the user and the sensor dataare used to generate the affinity score for the place.
 41. A computerprogram product comprising a non-transitory computer readable mediumencoding instructions that, in response to execution by a computingdevice, cause the computing device to perform operations comprising:receiving a place; retrieving user profile data associated with a userand a place affinity model associated with the user; retrieving richplace data associated with the place; and estimating an affinity scorefor the place using the place affinity model based at least in part onthe rich place data and the user profile data.
 42. The computer programproduct of claim 41, wherein instructions encoded in the computerreadable medium when executed cause the computing device to performoperations further comprising: receiving sensor data describing acurrent time of the day and a current vehicle location; and determininga situation for the user based at least in part on the sensor data,wherein the situation for the user and the sensor data are used togenerate the affinity score for the place.
 43. A computer-implementedmethod, comprising: receiving a search request from a user; determiningone or more matching places matched to the search request; estimatingone or more affinity scores for the one or more matching places; andpersonalizing the one or more matching places based at least in part onthe one or more affinity scores.
 44. The method of claim 14, whereinpersonalizing the one or more matching places based at least in part onthe one or more affinity scores further comprises: ordering the one ormore matching places based at least in part on the one or more affinityscores; and selecting one or more matching places with highest affinityscores.
 45. A system, comprising: a communication module for receiving asearch request from a user; a personalization module communicativelycoupled to the communication module for determining one or more matchingplaces matched to the search request, the personalization modulepersonalizing the one or more matching places based at least in part onone or more affinity scores; and a scoring module communicativelycoupled to the personalization module for estimating the one or moreaffinity scores for the one or more matching places, the scoring modulesending the one or more affinity scores for the one or more matchingplaces to the personalization module.
 46. The system of claim 45,wherein personalizing the one or more matching places based at least inpart on the one or more affinity scores further comprises: ordering theone or more matching places based at least in part on the one or moreaffinity scores; and selecting one or more matching places with highestaffinity scores.
 47. A computer program product comprising anon-transitory computer readable medium encoding instructions that, inresponse to execution by a computing device, cause the computing deviceto perform operations comprising: receiving a search request from auser; determining one or more matching places matched to the searchrequest; estimating one or more affinity scores for the one or morematching places; and personalizing the one or more matching places basedat least in part on the one or more affinity scores.
 48. The computerprogram product of claim 47, wherein personalizing the one or morematching places based at least in part on the one or more affinityscores further comprises: ordering the one or more matching places basedat least in part on the one or more affinity scores; and selecting oneor more matching places with highest affinity scores.
 49. Acomputer-implemented method, comprising: receiving a place associatedwith a user; retrieving rich place data associated with the place;retrieving user profile data for the user; retrieving a defaultstandard-user place affinity model pre-computed for one or more groupsof users; and generating a place affinity model associated with the userbased at least in part on the rich place data and the defaultstandard-user place affinity model.
 50. A computer-implemented method,comprising: receiving a place associated with a user; retrieving richplace data associated with the place; retrieving user profile data forthe user; retrieving an average-user place affinity model generated byaggregating individual place affinity models for a group of users; andgenerating the place affinity model associated with the user based atleast in part on the rich place data and the average-user place affinitymodel.